package com.atguigu.lease.web.admin.service;

import com.atguigu.lease.model.entity.SystemUser;
import com.atguigu.lease.model.enums.BaseStatus;
import com.atguigu.lease.web.admin.vo.system.user.SystemUserItemVo;
import com.atguigu.lease.web.admin.vo.system.user.SystemUserQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

/**
* @author liubo
* @description 针对表【system_user(员工信息表)】的数据库操作Service
* @createDate 2023-07-24 15:48:00
*/
public interface SystemUserService extends IService<SystemUser> {

    /**
     * 自定义分页查询
     * @param page 分页参数
     * @param queryVo 查询条件
     * @return 分页结果
     */
    IPage<SystemUserItemVo> pageCustom(Page<SystemUserItemVo> page, SystemUserQueryVo queryVo);

    /**
     * 根据ID查询用户信息（包含岗位名称）
     * @param id 用户ID
     * @return 用户信息
     */
    SystemUserItemVo getByIdCustom(Long id);

    /**
     * 保存或更新用户信息
     * @param systemUser 用户信息
     * @return 是否成功
     */
    boolean saveOrUpdateCustom(SystemUser systemUser);

    /**
     * 检查用户名是否存在
     * @param username 用户名
     * @return 是否存在
     */
    boolean isUsernameExists(String username);

    /**
     * 根据ID删除用户
     * @param id 用户ID
     * @return 是否成功
     */
    boolean removeByIdCustom(Long id);

    /**
     * 更新用户状态
     * @param id 用户ID
     * @param status 状态
     * @return 是否成功
     */
    boolean updateStatusByUserId(Long id, BaseStatus status);
}
